<!DOCTYPE html>

<style>
  .exists1, .exists2 { }
</style>

<script src="../../resources/js-test.js"></script>

<div id="target"></div>

<script>
description("Test that adding and removing class names with no matching selector does not cause a style recalc");

var target = document.getElementById('target');

function testClass(oldClasses, newClasses, needsRecalc)
{
    target.className = oldClasses;
    document.body.offsetTop;
    target.className = newClasses;
    shouldBe("internals.updateStyleAndReturnAffectedElementCount()", needsRecalc ? '1' : '0');
}

testClass('', 'exists1', true);
testClass('exists1', '', true);
testClass('', 'not-exists', false);
testClass('not-exists', '', false);
testClass('exists1', 'exists2', true);
testClass('exists1 exists2', 'exists2 exists1', false);
testClass('exists1 exists1', 'exists1 exists1', false);
testClass('exists1 exists1', 'exists1 exists1 doesnt-exist', false);
testClass('exists1 exists1 doesnt-exist', 'exists1 exists1', false);
testClass('exists1 exists1 doesnt-exist', 'exists1 doesnt-exist exists1', false);
testClass('exists1 doesnt-exist exists2 doesnt-exist exists1', 'doesnt-exist doesnt-exist2 exists2 exists1 doesnt-exist exists1', false);
</script>
